// pages/healthReport/healthReport.js 

const app = getApp();

Page({

  /** 
   * 页面的初始数据 
   */
  data: {
    date: '2022 年 07 月 10 日',
    _date: '2022-7-28',
    timeArray: ['上午', '下午', '晚上'],
    region: ['湖北省', '武汉市', '蔡甸区'],
    index: 0,
    temperature: undefined,
    otherInfo: ""
  },

  // 返回到主界面
  goBack: function () {
    wx.navigateBack({
      delta: 1
    })
  },

  // 获取日期
  getTime: function () {
    console.log('getTime success');
    var that = this;
    var curDate = new Date();
    var y = curDate.getFullYear(); // 分别获取年月日 
    var m = curDate.getMonth() + 1;
    var d = curDate.getDate();
    that.setData({
      date: y + ' 年 ' + (m < 10 ? '0' + m : m) + ' 月 ' + (d < 10 ? '0' + d : d) + ' 日',
      today: y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d),
      _date: y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d)
    })
    console.log(curDate)
    console.log(that.data.today)
  },

  // 日期选择器
  bindDateChange: function (e) {
    var that = this;
    var list = e.detail.value.split('-');
    var seleDate = list[0] + ' 年 ' + list[1] + ' 月 ' + list[2] + ' 日 ';
    var curDate = new Date();
    that.setData({
      date: seleDate,
      _date: e.detail.value
    })
    console.log(that.data._date);
  },

  // 地区选择器
  bindRegionChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value);
    this.setData({
      region: e.detail.value
    })
  },

  // 填报时间段选择器
  bindPickerChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value);
    this.setData({
      index: e.detail.value
    })
  },

  // 监听体温输入框
  inputTemperature: function (e) {
    this.setData({
      temperature: e.detail.value
    })
  },

  // 监听其他信息输入框
  inputOtherInfo: function (e) {
    this.setData({
      otherInfo: e.detail.value
    })
  },

  // 确定按钮
  confirm: function () {
    var that = this;
    if (that.data.temperature == undefined || that.data.temperature == "") {
      wx.showModal({ // 弹出模态对话框
        title: '提示',
        content: '请填写体温！',
        showCancel: false,
        success(res) {
          if (res.confirm) { // 用户点击确定后
            console.log('用户点击确定');
          }
        }
      })
    } else {
      // 判断体温的填写格式
      var len = that.data.temperature.length;
      var temperature = that.data.temperature;
      var formal = true;
      var cntSpot = 0;
      for (var i = 0; i < len; i++) {
        if (temperature.charAt(i) == '.') {
          cntSpot++;
          if (cntSpot > 1 || i == 0 || i == len - 1) { // 小数点不能有多个，不能在开头或者结尾
            formal = false;
            break;
          }
        }
        if ((temperature.charAt(i) < '0' || temperature.charAt(i) > '9') && temperature.charAt(i) != '.') {
          formal = false; // 只能是数字以及小数点
          break;
        }
      }
      if (!formal) { // 不是纯数字则弹窗提醒用户重新输入
        wx.showModal({ // 弹出模态对话框
          title: '提示',
          content: '请注意体温填写的格式',
          showCancel: false,
          success(res) {
            if (res.confirm) { // 用户点击确定后
              console.log('用户点击确定');
            }
          }
        })
      } else { // 体温的输入格式没问题
        var temperature = Number(that.data.temperature); // 此时体温是字符串格式，，要转换为数字格式
        that.setData({
          temperature: temperature
        })
        if (temperature >= 35 && temperature <= 42) { // 检查输入的体温是否在合理范围
          if (temperature < 37.3) {
            this.healthReport(); // 一切都没有问题，调用云函数进行健康上报
          } else {
            wx.showModal({ // 弹出模态对话框
              title: '体温偏高',
              content: '请确认您填写的体温是否为' + temperature + '℃',
              showCancel: true,
              success(res) {
                if (res.confirm) { // 用户点击确定后
                  console.log('用户点击确定');
                  that.healthReport();
                } else if (res.cancel) {
                  console.log('用户点击取消');
                }
              }
            })
          }
        } else {
          wx.showModal({ // 弹出模态对话框
            title: '警告',
            content: '请认真填写体温！！！',
            showCancel: false,
            success(res) {
              if (res.confirm) { // 用户点击确定后
                console.log('用户点击确定');
              }
            }
          })
        }
      }

    }
  },

  // 调用云函数
  healthReport: function () {
    var that = this;
    // 调用云函数
    wx.cloud.callFunction({
      name: 'healthReport',
      data: {
        name: app.globalData.household.name,
        date: new Date(that.data._date),
        region: that.data.region[0] + that.data.region[1] + that.data.region[2],
        timeSlot: that.data.timeArray[that.data.index],
        temperature: that.data.temperature,
        otherInfo: that.data.otherInfo
      },
      success: function (res) {
        console.log(res);
        if (res.result.errCode == 1) {
          console.log("没有正确获取到用户的openid");
        } else if(res.result.errCode == 2) {
          console.log("没有传入完整的参数");
        } else {
          if (res.result.data.ok) { // 成功上报
            // 弹出模态对话框
            wx.showModal({
              title: '提示',
              content: '上报成功',
              showCancel: false,
              success(res) {
                if (res.confirm) { // 用户点击确定后
                  console.log('用户点击确定');
                  // 返回主界面
                  // that.goBack();
                }
              }
            })
          } else { // 该日期该时间段已经上报过
            // 弹出模态对话框
            wx.showModal({
              title: '提示',
              content: '该日期该时间段已经上报过',
              showCancel: false,
              success(res) {
                if (res.confirm) { // 用户点击确定后
                  console.log('用户点击确定');
                }
              }
            })
          }
        }
      }
    })
  },

  /** 
   * 生命周期函数--监听页面加载 
   */
  onLoad(options) {

  },

  /** 
   * 生命周期函数--监听页面初次渲染完成 
   */
  onReady() {
    this.getTime();
    this.setData({
      household: app.globalData.household,
    })
  },

  /** 
   * 生命周期函数--监听页面显示 
   */
  onShow() {},

  /** 
   * 生命周期函数--监听页面隐藏 
   */
  onHide() {

  },

  /** 
   * 生命周期函数--监听页面卸载 
   */
  onUnload() {

  },

  /** 
   * 页面相关事件处理函数--监听用户下拉动作 
   */
  onPullDownRefresh() {

  },

  /** 
   * 页面上拉触底事件的处理函数 
   */
  onReachBottom() {

  },

  /** 
   * 用户点击右上角分享 
   */
  onShareAppMessage() {

  }
})